{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Use Common Crawl Data\n",
    "> How to use common crawl data? There is 2 ways to achieve this"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 🌌 Dump-ID\n",
    "> common crawl dump id related to the date of the crawl. ex: 2023-23"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "spark:\n",
      "  appname: CommonCrawl\n",
      "  driver:\n",
      "    memory: 16g\n",
      "etl:\n",
      "- name: data_ingestion___common_crawl___dump2raw\n",
      "  args:\n",
      "    dump: 2023-23\n",
      "    segment_n: 1\n",
      "- name: data_ingestion___common_crawl___raw2ufl\n",
      "- name: cleaning___normalization___number\n",
      "- name: deduplication___common_crawl___exact_line\n",
      "- name: quality___language___fasttext_filter\n",
      "  args:\n",
      "    whitelist:\n",
      "    - ko\n",
      "    threshold: 0.5\n",
      "- name: data_load___huggingface___ufl2hf_obj\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from omegaconf import OmegaConf\n",
    "\n",
    "# load from dict\n",
    "ETL_config = OmegaConf.create({\n",
    "    'spark': {\n",
    "        'appname': 'CommonCrawl',\n",
    "        'driver': {'memory': '16g'},\n",
    "    },\n",
    "    'etl': [\n",
    "        {\n",
    "            'name': 'data_ingestion___common_crawl___dump2raw',\n",
    "            'args': {\n",
    "                'dump': \"2023-23\",\n",
    "                'segment_n': 1,\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_ingestion___common_crawl___raw2ufl'},\n",
    "        {'name': 'cleaning___normalization___number'},\n",
    "        {'name': 'deduplication___common_crawl___exact_line'},\n",
    "        {\n",
    "            'name': 'quality___language___fasttext_filter',\n",
    "            'args': {\n",
    "                'whitelist': ['ko'],\n",
    "                'threshold': 0.5,\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_load___huggingface___ufl2hf_obj'}\n",
    "    ]\n",
    "})\n",
    "\n",
    "print(OmegaConf.to_yaml(ETL_config))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Setting default log level to \"WARN\".\n",
      "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n",
      "23/11/14 22:09:41 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
      "23/11/14 22:09:41 WARN SparkConf: Note that spark.local.dir will be overridden by the value set by the cluster manager (via SPARK_LOCAL_DIRS in mesos/standalone/kubernetes and LOCAL_DIRS in YARN).\n",
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading and preparing dataset spark/-572665896 to /root/.cache/huggingface/datasets/spark/-572665896/0.0.0...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset spark downloaded and prepared to /root/.cache/huggingface/datasets/spark/-572665896/0.0.0. Subsequent calls will reuse this data.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['id', 'meta', 'name', 'text'],\n",
       "    num_rows: 292\n",
       "})"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dataverse.etl import ETLPipeline\n",
    "\n",
    "etl_pipeline = ETLPipeline()\n",
    "\n",
    "# raw -> hf_obj\n",
    "spark, dataset = etl_pipeline.run(ETL_config)\n",
    "dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'id': '19ee2ac082ef11eeae4262800acfdc4f',\n",
       " 'meta': '{\"title\": \"\\\\uc640\\\\uae00\\\\uc640\\\\uae00 - \\\\uc7ac\\\\ubbf8\", \"url\": \"http://wagle.isplus.joins.com/app/index.php?mid=wg_fun&page=6\", \"date_download\": \"2023-06-05T00:45:09Z\", \"digest\": \"sha1:UDASCLMI7FRAUR5PKBHJZ6DZSBZPZTFI\", \"length\": 2557, \"nlines\": 45, \"source_domain\": \"wagle.isplus.joins.com\", \"cc_segment\": \"crawl-data/CC-MAIN-2023-23/segments/1685224650409.64/wet/CC-MAIN-20230604225057-20230605015057-00644.warc.wet.gz\"}',\n",
       " 'name': 'common_crawl',\n",
       " 'text': \"조인스\\n와글와글 전체 목록\\n조회\\n0000 매경기 재평가되는 맨유짤 더레즈 0000-00-00\\n0000 아스날이 0경기 0승을 한 이유? 구0000너 0000-00-00\\n0000 은근 축구 혼자서 다하는 선수 풋스타 0000-00-00\\n0000 [오피셜] 아스날, 리그 0위로 0라운드 종료 아스날아.. 0000-00-00\\n0000 [놀람] 놀랄 수 밖에 없는 첼시 선발라인업 케파멘디 0000-00-00\\n0000 [감동] 분데스리가 00번의 과거와 미래 포항항 0000-00-00\\n0000 ???:너네들 재미있어보이네~ 에밀홀딩 0000-00-00\\n0000 [정보]0000년 0회 이상 우승한팀 어우뮌x0 0000-00-00\\n0000 커뮤니티실드에서의 리버풀 해리킼웰 0000-00-00\\n0000 [유머] ?? : 아스날... 생각보다 강팀이잖아..? 금발롱 0000-00-00\\n0000 (감동)??:우....승...뭐라고? 티아구메.. 0000-00-00\\n0000 ????:우승팀이 이정도라니 나설필요가 없겠는걸 '질'? 0년0우승.. 0000-00-00\\n0000 위닝의 저주(?) 베르바턴 0000-00-00\\n0000 [유머] 현시점 최강팀 보이빕 0000-00-00\\n0000 다시보는 바르셀로나 보드진 영입 큰일은바.. 0000-00-00\\n0000 “축구의 신” 뮌헨콜라 0000-00-00\\n0000 라리가 0형제.jpg 헤르니고르 0000-00-00\\n0000 ???: 어이! 바르샤, 한잔 해~! 사비에르 0000-00-00\\n0000 그래도 아직 레바뮌 맞지 ㅋㅋ 킴미희 0000-00-00\\n0000 뮌헨-돌문-맨유 내리갈굼 퓰리식혜 0000-00-00\\n0000 최근 펩과르디올라 챔스 성적ㅋㅋ 펩몬드 0000-00-00\\n0000 ?????: 만나서 반갑다 00000 후안펩시 0000-00-00\\n0000 챔스 아탈란타 상대로 유일하게 클린시트한 키퍼 누구? 안녕카일 0000-00-00\\n0000 PSG VS 아탈란타 네이마르 요약 축신마르 0000-00-00\\n0000 맨유팬의 불타는 행복회로 에덴하자드 0000-00-00\\n0000 최근 경기당 0골씩 넣고 있는 축구선수 썬가드 0000-00-00\\n0000 [유머] 램파드 인터뷰떴다! 램램반장 0000-00-00\\n0000 [감동] ??? : 우...승...뭐라고? 아스날팬임 0000-00-00\\n0000 ???: 야 토트넘! 라이트구너 0000-00-00\\n0000 드디어 완성된 PL 빅0 사네는뮌.. 0000-00-00\\n0000 [유머] 와 아스날 매수ㅋㅋㅋ 김티어니 0000-00-00\\n0000 ???: 하늘은 왜 아스날을 낳고 베베루니 0000-00-00\\n0000 00/00시즌 린가드 유니버스 끝 린가디 0000-00-00\\n0000 0류 맨유 팬카페 맨유더마스 0000-00-00\\n0000 프리미어리그 운명공동체 0팀 AlMacdo 0000-00-00\\n쓰기\"}"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 🌌 WET folder\n",
    "> use pre-downloaded WET files\n",
    "\n",
    "We are going to use the cache common crawl as we just downloaded while processing dump-id ETL example right before. Time to use it!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from dataverse.utils.setting import SystemSetting\n",
    "from pathlib import Path"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "wet_path = Path(SystemSetting().CACHE_DIR) / '.cache' / 'dataverse' / 'dataset' / 'common_crawl_2023-23'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "spark:\n",
      "  appname: CommonCrawl\n",
      "  driver:\n",
      "    memory: 16g\n",
      "etl:\n",
      "- name: data_ingestion___common_crawl___wet2raw\n",
      "  args:\n",
      "    wet_path: /root/.cache/dataverse/dataset/common_crawl_2023-23\n",
      "- name: data_ingestion___common_crawl___raw2ufl\n",
      "- name: cleaning___normalization___number\n",
      "- name: deduplication___common_crawl___exact_line\n",
      "- name: quality___language___fasttext_filter\n",
      "  args:\n",
      "    whitelist:\n",
      "    - ko\n",
      "    threshold: 0.5\n",
      "- name: data_load___huggingface___ufl2hf_obj\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from omegaconf import OmegaConf\n",
    "\n",
    "# load from dict\n",
    "ETL_config = OmegaConf.create({\n",
    "    'spark': {\n",
    "        'appname': 'CommonCrawl',\n",
    "        'driver': {'memory': '16g'},\n",
    "    },\n",
    "    'etl': [\n",
    "        {\n",
    "            'name': 'data_ingestion___common_crawl___wet2raw',\n",
    "            'args': {\n",
    "                'wet_path': str(wet_path),\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_ingestion___common_crawl___raw2ufl'},\n",
    "        {'name': 'cleaning___normalization___number'},\n",
    "        {'name': 'deduplication___common_crawl___exact_line'},\n",
    "        {\n",
    "            'name': 'quality___language___fasttext_filter',\n",
    "            'args': {\n",
    "                'whitelist': ['ko'],\n",
    "                'threshold': 0.5,\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_load___huggingface___ufl2hf_obj'}\n",
    "    ]\n",
    "})\n",
    "\n",
    "print(OmegaConf.to_yaml(ETL_config))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "23/11/14 22:10:11 WARN SparkConf: Note that spark.local.dir will be overridden by the value set by the cluster manager (via SPARK_LOCAL_DIRS in mesos/standalone/kubernetes and LOCAL_DIRS in YARN).\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading and preparing dataset spark/-1399168669 to /root/.cache/huggingface/datasets/spark/-1399168669/0.0.0...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset spark downloaded and prepared to /root/.cache/huggingface/datasets/spark/-1399168669/0.0.0. Subsequent calls will reuse this data.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['id', 'meta', 'name', 'text'],\n",
       "    num_rows: 292\n",
       "})"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dataverse.etl import ETLPipeline\n",
    "\n",
    "etl_pipeline = ETLPipeline()\n",
    "\n",
    "# raw -> hf_obj\n",
    "spark, dataset = etl_pipeline.run(ETL_config)\n",
    "dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'id': '29551d2082ef11eea9d462800acfdc4f',\n",
       " 'meta': '{\"title\": \"\\\\uc640\\\\uae00\\\\uc640\\\\uae00 - \\\\uc7ac\\\\ubbf8\", \"url\": \"http://wagle.isplus.joins.com/app/index.php?mid=wg_fun&page=6\", \"date_download\": \"2023-06-05T00:45:09Z\", \"digest\": \"sha1:UDASCLMI7FRAUR5PKBHJZ6DZSBZPZTFI\", \"length\": 2557, \"nlines\": 45, \"source_domain\": \"wagle.isplus.joins.com\", \"cc_segment\": \"/root/.cache/dataverse/dataset/common_crawl_2023-23/CC-MAIN-20230604225057-20230605015057-00644.warc.wet.gz\"}',\n",
       " 'name': 'common_crawl',\n",
       " 'text': \"조인스\\n와글와글 전체 목록\\n조회\\n0000 매경기 재평가되는 맨유짤 더레즈 0000-00-00\\n0000 아스날이 0경기 0승을 한 이유? 구0000너 0000-00-00\\n0000 은근 축구 혼자서 다하는 선수 풋스타 0000-00-00\\n0000 [오피셜] 아스날, 리그 0위로 0라운드 종료 아스날아.. 0000-00-00\\n0000 [놀람] 놀랄 수 밖에 없는 첼시 선발라인업 케파멘디 0000-00-00\\n0000 [감동] 분데스리가 00번의 과거와 미래 포항항 0000-00-00\\n0000 ???:너네들 재미있어보이네~ 에밀홀딩 0000-00-00\\n0000 [정보]0000년 0회 이상 우승한팀 어우뮌x0 0000-00-00\\n0000 커뮤니티실드에서의 리버풀 해리킼웰 0000-00-00\\n0000 [유머] ?? : 아스날... 생각보다 강팀이잖아..? 금발롱 0000-00-00\\n0000 (감동)??:우....승...뭐라고? 티아구메.. 0000-00-00\\n0000 ????:우승팀이 이정도라니 나설필요가 없겠는걸 '질'? 0년0우승.. 0000-00-00\\n0000 위닝의 저주(?) 베르바턴 0000-00-00\\n0000 [유머] 현시점 최강팀 보이빕 0000-00-00\\n0000 다시보는 바르셀로나 보드진 영입 큰일은바.. 0000-00-00\\n0000 “축구의 신” 뮌헨콜라 0000-00-00\\n0000 라리가 0형제.jpg 헤르니고르 0000-00-00\\n0000 ???: 어이! 바르샤, 한잔 해~! 사비에르 0000-00-00\\n0000 그래도 아직 레바뮌 맞지 ㅋㅋ 킴미희 0000-00-00\\n0000 뮌헨-돌문-맨유 내리갈굼 퓰리식혜 0000-00-00\\n0000 최근 펩과르디올라 챔스 성적ㅋㅋ 펩몬드 0000-00-00\\n0000 ?????: 만나서 반갑다 00000 후안펩시 0000-00-00\\n0000 챔스 아탈란타 상대로 유일하게 클린시트한 키퍼 누구? 안녕카일 0000-00-00\\n0000 PSG VS 아탈란타 네이마르 요약 축신마르 0000-00-00\\n0000 맨유팬의 불타는 행복회로 에덴하자드 0000-00-00\\n0000 최근 경기당 0골씩 넣고 있는 축구선수 썬가드 0000-00-00\\n0000 [유머] 램파드 인터뷰떴다! 램램반장 0000-00-00\\n0000 [감동] ??? : 우...승...뭐라고? 아스날팬임 0000-00-00\\n0000 ???: 야 토트넘! 라이트구너 0000-00-00\\n0000 드디어 완성된 PL 빅0 사네는뮌.. 0000-00-00\\n0000 [유머] 와 아스날 매수ㅋㅋㅋ 김티어니 0000-00-00\\n0000 ???: 하늘은 왜 아스날을 낳고 베베루니 0000-00-00\\n0000 00/00시즌 린가드 유니버스 끝 린가디 0000-00-00\\n0000 0류 맨유 팬카페 맨유더마스 0000-00-00\\n0000 프리미어리그 운명공동체 0팀 AlMacdo 0000-00-00\\n쓰기\"}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 🌌 WET folder - Add MinhashLSH fuzzy deduplication\n",
    "> same but more preprocessing! \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "spark:\n",
      "  appname: CommonCrawl\n",
      "  driver:\n",
      "    memory: 16g\n",
      "etl:\n",
      "- name: data_ingestion___common_crawl___wet2raw\n",
      "  args:\n",
      "    wet_path: /root/.cache/dataverse/dataset/common_crawl_2023-23\n",
      "- name: data_ingestion___common_crawl___raw2ufl\n",
      "- name: cleaning___normalization___number\n",
      "- name: deduplication___minhash___lsh_jaccard\n",
      "- name: deduplication___common_crawl___exact_line\n",
      "- name: quality___language___fasttext_filter\n",
      "  args:\n",
      "    whitelist:\n",
      "    - ko\n",
      "    threshold: 0.5\n",
      "- name: data_load___huggingface___ufl2hf_obj\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from omegaconf import OmegaConf\n",
    "\n",
    "# load from dict\n",
    "ETL_config = OmegaConf.create({\n",
    "    'spark': {\n",
    "        'appname': 'CommonCrawl',\n",
    "        'driver': {'memory': '16g'},\n",
    "    },\n",
    "    'etl': [\n",
    "        {\n",
    "            'name': 'data_ingestion___common_crawl___wet2raw',\n",
    "            'args': {\n",
    "                'wet_path': str(wet_path),\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_ingestion___common_crawl___raw2ufl'},\n",
    "        {'name': 'cleaning___normalization___number'},\n",
    "        {'name': 'deduplication___minhash___lsh_jaccard'},\n",
    "        {'name': 'deduplication___common_crawl___exact_line'},\n",
    "        {\n",
    "            'name': 'quality___language___fasttext_filter',\n",
    "            'args': {\n",
    "                'whitelist': ['ko'],\n",
    "                'threshold': 0.5,\n",
    "            }\n",
    "        },\n",
    "        {'name': 'data_load___huggingface___ufl2hf_obj'}\n",
    "    ]\n",
    "})\n",
    "\n",
    "print(OmegaConf.to_yaml(ETL_config))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "23/11/14 22:10:34 WARN SparkConf: Note that spark.local.dir will be overridden by the value set by the cluster manager (via SPARK_LOCAL_DIRS in mesos/standalone/kubernetes and LOCAL_DIRS in YARN).\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading and preparing dataset spark/2085970941 to /root/.cache/huggingface/datasets/spark/2085970941/0.0.0...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset spark downloaded and prepared to /root/.cache/huggingface/datasets/spark/2085970941/0.0.0. Subsequent calls will reuse this data.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Dataset({\n",
       "    features: ['id', 'meta', 'name', 'text'],\n",
       "    num_rows: 285\n",
       "})"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dataverse.etl import ETLPipeline\n",
    "\n",
    "etl_pipeline = ETLPipeline()\n",
    "\n",
    "# raw -> hf_obj\n",
    "spark, dataset = etl_pipeline.run(ETL_config)\n",
    "dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'id': '3aa3dddc82ef11ee898d62800acfdc4f',\n",
       " 'meta': '{\"title\": \"\\\\ub3d9\\\\uc601\\\\uc0c1 | \\\\uc6b0\\\\ub9ac \\\\ud568\\\\uaed8 \\\\ub9cc\\\\ub4e4\\\\uc5b4 \\\\ubd05\\\\uc2dc\\\\ub2e4.(57.\\\\ud478\\\\ucd08\\\\ubcf6\\\\uc74c)\\\\u200b\", \"url\": \"https://dprktoday.com/videos/16055?list=\", \"date_download\": \"2023-06-05T01:01:45Z\", \"digest\": \"sha1:6TKZ4VWGQESC6HVNGQS3ESIE4BR63V25\", \"length\": 4007, \"nlines\": 317, \"source_domain\": \"dprktoday.com\", \"cc_segment\": \"/root/.cache/dataverse/dataset/common_crawl_2023-23/CC-MAIN-20230604225057-20230605015057-00644.warc.wet.gz\"}',\n",
       " 'name': 'common_crawl',\n",
       " 'text': '첫페지로\\n날자별열람\\n손전화홈페지열람기\\n조선어 English 中国语 Русский\\n정치\\n경제\\n군사\\n사회문화\\n조국통일\\n관광\\n력사\\n로작\\n기 사\\n동영상\\n사 진\\n음악감상\\n전체\\n혁명활동소식\\n기록영화\\n회고록《세기와 더불어》\\n《조선의 오늘》동영상\\n조선중앙TV\\nU C C\\n국제친선전람관을 찾아서 |\\n국가선물관을 찾아서 |\\n특집 |\\n생활의 랑만과 정서 |\\n미덕의 향기 |\\n인물소개 |\\n예술공연 |\\n아동무대 |\\n조선영화 |\\nTV예술영화 |\\nTV련속소설 |\\nTV련속극 |\\nTV극 |\\nTV기록영화 |\\nTV기록편집물 |\\n사이프로편집물 |\\n만화영화 |\\n인기동영상 |\\n화면취재시간 |\\n민족의 자취를 찾아서 |\\n우리함께 |\\n조선의 숨결 |\\n이 시각 평양, 그 한토막 |\\n나는 좋아요 |\\n료리백과 |\\n[료리만들기]\\n우리 함께 만들어 봅시다.(00.푸초볶음)\\u200b\\n0 0:00 [0000-00-00]\\n온면\\n돼지고기졸임\\n봄철음식 -달래무우김치, 냉이고추장무침-\\n감자가루군만두\\n닭알료리, 청포채\\n0 0분 [0000-00-00]\\n우리 함께 만들어 봅시다.(000.뜨더국)\\n우리 함께 만들어 봅시다.(000.닭위졸임)\\n우리 함께 만들어 봅시다.(000.미꾸라지풋고추졸임)\\n0 0:0 [0000-00-00]\\n우리 함께 만들어 봅시다.(000.무우채김치)\\n우리 함께 만들어 봅시다.(000.칼제비국)\\n우리 함께 만들어 봅시다.(000.고등어졸임)\\n우리 함께 만들어 봅시다.(000.록두묵채)\\n|\\n감상글(0) |\\n동영상보기 |\\n추천하기\\n료리만들기 000건\\n0분 00초\\n0 [0000-00-00]\\n0분\\n0분 0초\\n←되돌이\\n현대조선을 빛내이신 절세위인들 | 회고록 《세기와 더불어》 | 정치 | 경제 | 군사 | 사회문화 | 조국통일 | 관광 | 력사\\n기사 | 동영상 | 사진 | 음악감상 | 통일신보 | 다매체편집물 | 도서 | 도서련재 | 록음물 | 그림책 | 조선우표 | 조선미술 | 명제품 | 특산료리 | 독자목소리 | 감상글\\n홈페지봉사에 관한 문의\\nCopyright© 0000-0000 《평양모란봉편집사》 All Rights Reserved'}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[0]"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "llm",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
